package com.knife.message.domain.service;

import com.knife.message.infra.exception.SendFailedException;

import javax.mail.MessagingException;
import java.io.File;
import java.util.List;

/**
 * @author tianhao.luo@hand-china.com
 * @version 1.0
 * @date 2022年06月12日 星期日 5:22 下午
 * @description
 * @since 1.0
 */
public interface KnifeEmailSendHelper {
    /**
     * 批量发送邮件
     *
     * @param subject   标头
     * @param content   内容
     * @param emailList 接收人
     * @throws SendFailedException 发送失败
     * @description
     * @version 1.0
     * @author tianhao.luo@hand-china.com
     * @date 2022/6/12 5:52 下午
     * @since 1.0
     */
    void sendEmail(String subject, String content, List<String> emailList) throws SendFailedException, MessagingException;

    /**
     * 发送邮件
     *
     * @param subject 标头
     * @param content 内容
     * @param email   接收人
     * @throws SendFailedException 发送失败
     * @description
     * @version 1.0
     * @author tianhao.luo@hand-china.com
     * @date 2022/6/12 5:52 下午
     * @since 1.0
     */
    void sendEmail(String subject, String content, String email) throws SendFailedException, MessagingException;


    /**
     * 发送邮件
     *
     * @param subject  标头
     * @param content  内容
     * @param email    接收人
     * @param fileList 附件
     * @throws SendFailedException 发送失败
     * @description
     * @version 1.0
     * @author tianhao.luo@hand-china.com
     * @date 2022/6/12 5:52 下午
     * @since 1.0
     */
    void sendEmailWithAttachment(String subject, String content, String email, List<File> fileList) throws SendFailedException, MessagingException;
}
